﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Mindfor.Web.Data;
using NHibernate;
using NHibernate.Linq;

namespace Mindfor.Web.Modules.Yandex
{
	/// <summary>
	/// Provides widget with static map and additional option to open JS-map on Yandex.Map service
	/// </summary>
	public class YandexModule : ModuleBase
    {
		/// <summary>
		/// API-key for Yndex.Maps service
		/// </summary>
		public const string ApiKeyOption = "ApiKey";

		/// <summary>
		/// Value of &um= parametr, that identifies ur custom map on Yandex.Maps service
		/// </summary>
		public const string UserMapParametrOption = "UserMapParametr";

		/// <summary>
		/// identifies action after u click on widget - open JS-map in new window or in current tab
		/// </summary>
		public const string WidgetLinkTargetOption = "WidgetLinkTarget";

		/// <summary>
		/// Registering options for Yandex.Module: API-key, UserMap-key and target of JS-map
		/// </summary>
		/// <param name="info">Module Register info</param>
		public override void Register(ModuleRegistrationData info)
		{
			base.Register(info);

			//create options
			bool optionsChanged = false;
			ModuleOption apiKey = Options[ApiKeyOption];
			if (apiKey == null)
			{
				apiKey = new ModuleOption(ApiKeyOption, ModuleOptionType.String, "", "API ключ для доступа к сервису Яндекс.Карты. Если не указан этот параметр, то карта отображаться не будет.");
				Options.Add(apiKey);
			    optionsChanged = true;
			}

			ModuleOption umParam = Options[UserMapParametrOption];
			if (umParam == null)
			{
				umParam = new ModuleOption(UserMapParametrOption, ModuleOptionType.String, "", "Параметр, однозначно идентифицирующий вашу карту на сервисе Яндекс.Карты. Если не указан, то ссылка на вашу карту с виджета будет отключена.");
				Options.Add(umParam);
				optionsChanged = true;
			}

			ModuleOption umBlank = Options[WidgetLinkTargetOption];
			if (umBlank == null)
			{
				umBlank = new ModuleOption(WidgetLinkTargetOption, ModuleOptionType.String, "_blank", "Параметр, указывающий в каком окне или вкладке откроется карта на сервисе Яндекс.Карты. По умолчанию открывается в новом окне.");
				Options.Add(umBlank);
				optionsChanged = true;
			}

			if (optionsChanged)
			    Options.Save(info.Data);
		}
    }
}
